Firestore における多対多のデータベース設計
see Cloud FirestoreとFirebase Cloud Storageを使ってソーシャル機能を実装する方法 - Qiita
- 基本的には Sub-collection が良さそう
- root に中間テーブル的なものを用意する方法が 2019 年くらいは一般的だったようだが、これだと Collection への write 制限に引っかかってパフォーマンスが落ちる。
- 使用量と上限 | Firestore | Firebase
Cloud Firestore でこれらのしきい値の超過が禁止されることはありませんが、超過するとパフォーマンスに影響します。
コレクションへの最大書き込み速度(コレクションに含まれているドキュメントのインデックス付きフィールドには順次値が含まれている): 1 秒あたり 500
具体例
- ユーザー同士がフォローする
- ユーザーが気に入った商品にいいねをつける
users/:
{userID}:
follows/:
{followID}:
followingID: string
followedID: string
likedStores/:
{likedStoreID}:
storeID: string
userID: string